\subsection{cam-target.c-Dateireferenz}
\label{cam-target_8c}\index{cam-target.c@{cam-target.c}}
Implementiert die Kamera-Schnittstelle auf dem Zielsystem (LCV-Board). 

{\tt \#include $<$sys/ioctl.h$>$}\par
{\tt \#include $<$stdio.h$>$}\par
{\tt \#include $<$stdlib.h$>$}\par
{\tt \#include $<$fcntl.h$>$}\par
{\tt \#include $<$linux/ioctl.h$>$}\par
{\tt \#include $<$errno.h$>$}\par
{\tt \#include $<$unistd.h$>$}\par
{\tt \#include $<$getopt.h$>$}\par
{\tt \#include $<$string.h$>$}\par
{\tt \#include $<$strings.h$>$}\par
{\tt \#include \char`\"{}cam.h\char`\"{}}\par
{\tt \#include \char`\"{}cam-reg-config.h\char`\"{}}\par
{\tt \#include \char`\"{}i2c.h\char`\"{}}\par
{\tt \#include \char`\"{}bayer-lcv.h\char`\"{}}\par
{\tt \#include \char`\"{}bmp-header.h\char`\"{}}\par
\subsubsection*{Funktionen}
\begin{CompactItemize}
\item 
void {\bf lcv\_\-cam\_\-registers\_\-buffer\_\-init} ()
\begin{CompactList}\small\item\em Buffer initialisieren. \item\end{CompactList}\item 
void {\bf Raw10To8bit} (unsigned char $\ast$pic, int size)
\item 
{\bf lcv\_\-picture} {\bf lcv\_\-capture\_\-frame} (const char $\ast$filename)
\begin{CompactList}\small\item\em Holt ein Bild von der Kamera. \item\end{CompactList}\item 
{\bf lcv\_\-picture} {\bf lcv\_\-capture\_\-region} (const unsigned short start\_\-x, const unsigned short start\_\-y, const unsigned short width, const unsigned short height, const char $\ast$filename)
\begin{CompactList}\small\item\em Holt ein Bildausschnutt von der Kamera. \item\end{CompactList}\item 
char {\bf lcv\_\-config\_\-write} (const unsigned int setting, const unsigned short value)
\begin{CompactList}\small\item\em Schreibt eine Registerkonfiguration. \item\end{CompactList}\item 
unsigned short {\bf lcv\_\-config\_\-read} (const unsigned int setting)
\begin{CompactList}\small\item\em Liest den Wert einer Registerkonfiguration. \item\end{CompactList}\item 
char {\bf lcv\_\-regs\_\-to\_\-default} ()
\begin{CompactList}\small\item\em Setzt alleRegister auf ihren Standardwert. \item\end{CompactList}\item 
void {\bf lcv\_\-reset\_\-capture\_\-frame} ()
\begin{CompactList}\small\item\em Setzt die 4 für die Bildregion verantwortlichen Register auf den Standardwert zurück. \item\end{CompactList}\item 
void {\bf lcv\_\-reg\_\-buffering} (const unsigned char enable)
\begin{CompactList}\small\item\em Aktiviert bzw. \item\end{CompactList}\end{CompactItemize}
\subsubsection*{Variablen}
\begin{CompactItemize}
\item 
unsigned short {\bf cam\_\-registers\_\-buffer\_\-cnt} = sizeof({\bf cam\_\-reg\_\-config}) / sizeof($\ast${\bf cam\_\-reg\_\-config})
\begin{CompactList}\small\item\em Grösse des Buffers. \item\end{CompactList}\item 
unsigned short {\bf cam\_\-registers\_\-buffer} [sizeof({\bf cam\_\-reg\_\-config})/sizeof($\ast${\bf cam\_\-reg\_\-config})]
\begin{CompactList}\small\item\em Bufferarray für Kameraregister. \item\end{CompactList}\item 
unsigned char {\bf cam\_\-registers\_\-buffer\_\-initialized} = FALSE
\begin{CompactList}\small\item\em Buffer initialisiert. \item\end{CompactList}\item 
unsigned char {\bf enable\_\-buffer} = TRUE
\begin{CompactList}\small\item\em Buffer aktivieren, deaktivieren. \item\end{CompactList}\end{CompactItemize}


\subsubsection{Ausführliche Beschreibung}
Implementiert die Kamera-Schnittstelle auf dem Zielsystem (LCV-Board). 

\begin{Desc}
\item[Autor:]Daniel Kummer, Sebastian Kummer \end{Desc}
\begin{Desc}
\item[Datum:]Donnerstag, Dezember 12, 2007 \end{Desc}
\begin{Desc}
\item[Version:]1.0 \end{Desc}


Definiert in Datei {\bf cam-target.c}.

\subsubsection{Dokumentation der Funktionen}
\index{cam-target.c@{cam-target.c}!lcv_cam_registers_buffer_init@{lcv\_\-cam\_\-registers\_\-buffer\_\-init}}
\index{lcv_cam_registers_buffer_init@{lcv\_\-cam\_\-registers\_\-buffer\_\-init}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}void lcv\_\-cam\_\-registers\_\-buffer\_\-init ()}\hfill\label{cam-target_8c_3873992b3c53df8c894803971676954e}


Buffer initialisieren. 



Definiert in Zeile 333 der Datei cam-target.c.

Benutzt cam\_\-reg\_\-config, cam\_\-registers\_\-buffer\_\-cnt, lcv\_\-reg\_\-config::default\_\-val und TRUE.

Wird benutzt von lcv\_\-config\_\-read().\index{cam-target.c@{cam-target.c}!lcv_capture_frame@{lcv\_\-capture\_\-frame}}
\index{lcv_capture_frame@{lcv\_\-capture\_\-frame}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}{\bf lcv\_\-picture} lcv\_\-capture\_\-frame (const char $\ast$ {\em filename})}\hfill\label{cam-target_8c_abd5b4037cc6f83069eaf5718d5ed872}


Holt ein Bild von der Kamera. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em filename}]Dateiname des Bildes (wird auf dem Zielsystem ignoriert) \end{description}
\end{Desc}
\begin{Desc}
\item[Rückgabe:]Bild \end{Desc}


Definiert in Zeile 71 der Datei cam-target.c.

Benutzt bmphead\_\-bgr, CAM\_\-DEVICE, cam\_\-reg\_\-config, lcv\_\-picture::data, lcv\_\-picture::height, IMG\_\-BGR, lcv\_\-config\_\-read(), lcv\_\-log\_\-error(), lcv\_\-picture::length, Raw10To8bit(), REG\_\-WINDOW\_\-HEIGHT, REG\_\-WINDOW\_\-WIDTH, lcv\_\-picture::type und lcv\_\-picture::width.\index{cam-target.c@{cam-target.c}!lcv_capture_region@{lcv\_\-capture\_\-region}}
\index{lcv_capture_region@{lcv\_\-capture\_\-region}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}{\bf lcv\_\-picture} lcv\_\-capture\_\-region (const unsigned short {\em start\_\-x}, const unsigned short {\em start\_\-y}, const unsigned short {\em width}, unsigned short {\em height}, const char $\ast$ {\em filename})}\hfill\label{cam-target_8c_dc4ab6ea6f9ed6dd991488af90fade92}


Holt ein Bildausschnutt von der Kamera. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em start\_\-x}]Die erste X Koordinate der Region \item[{\em start\_\-y}]Die erste Y Koordinate der Region \item[{\em width}]Breite der Region \item[{\em height}]Höhe der Region \item[{\em filename}]Dateiname (Wird auf dem Zielsystem ignoriert) \end{description}
\end{Desc}
\begin{Desc}
\item[Rückgabe:]Bild \end{Desc}


Definiert in Zeile 146 der Datei cam-target.c.

Benutzt cam\_\-reg\_\-config, lcv\_\-capture\_\-frame(), lcv\_\-config\_\-read(), lcv\_\-config\_\-write(), lcv\_\-log\_\-error(), REG\_\-COLUMN\_\-START, REG\_\-ROW\_\-START, REG\_\-WINDOW\_\-HEIGHT und REG\_\-WINDOW\_\-WIDTH.\index{cam-target.c@{cam-target.c}!lcv_config_read@{lcv\_\-config\_\-read}}
\index{lcv_config_read@{lcv\_\-config\_\-read}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}unsigned short lcv\_\-config\_\-read (const unsigned int {\em setting})}\hfill\label{cam-target_8c_672e3188bbcf535ff2e06d8539a9c13d}


Liest den Wert einer Registerkonfiguration. 

\begin{Desc}
\item[Rückgabe:]Registerwert \end{Desc}


Definiert in Zeile 290 der Datei cam-target.c.

Benutzt lcv\_\-reg\_\-config::addr, CAM\_\-DEV\_\-ID, CAM\_\-I2C\_\-DEVICE, cam\_\-reg\_\-config, cam\_\-registers\_\-cnt, lcv\_\-cam\_\-registers\_\-buffer\_\-init(), lcv\_\-i2c\_\-read\_\-register(), lcv\_\-log\_\-warning() und TRUE.\index{cam-target.c@{cam-target.c}!lcv_config_write@{lcv\_\-config\_\-write}}
\index{lcv_config_write@{lcv\_\-config\_\-write}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}char lcv\_\-config\_\-write (const unsigned int {\em setting}, const unsigned short {\em value})}\hfill\label{cam-target_8c_075f93aa7cc073b84b2f80d2818ee86c}


Schreibt eine Registerkonfiguration. 

\begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em setting}]Einstellung (Registeradresse) \item[{\em value}]Wert \end{description}
\end{Desc}
\begin{Desc}
\item[Rückgabe:]Erfolgsmeldung (positiv), bzw. Fehlernummer (negativ) \end{Desc}


Definiert in Zeile 256 der Datei cam-target.c.

Benutzt lcv\_\-reg\_\-config::addr, CAM\_\-DEV\_\-ID, CAM\_\-I2C\_\-DEVICE, cam\_\-reg\_\-config, cam\_\-registers\_\-cnt, ERROR\_\-ILLEGAL\_\-SETTING, ERROR\_\-ILLEGAL\_\-VALUE, lcv\_\-i2c\_\-write\_\-register(), lcv\_\-log\_\-warning(), lcv\_\-reg\_\-config::max\_\-val, lcv\_\-reg\_\-config::min\_\-val und TRUE.\index{cam-target.c@{cam-target.c}!lcv_reg_buffering@{lcv\_\-reg\_\-buffering}}
\index{lcv_reg_buffering@{lcv\_\-reg\_\-buffering}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}void lcv\_\-reg\_\-buffering (const unsigned char {\em enable})}\hfill\label{cam-target_8c_f73241718d1a517f6e12e4ee474b5c30}


Aktiviert bzw. 

deaktiviert das Softwaremässige Puffering der Register. Es empfiehlt sich das Buffering auf Targetsystemen mit mehr als einem gleichzeitig laufenden Bildverarbeitungsprogramm zu deaktivieren. Auf dem Hostsystem ist Buffering nicht implementiert. Standardmässig ist der Buffer aktiviert. \begin{Desc}
\item[Parameter:]
\begin{description}
\item[{\em enable}]Aktiviert bzw. deaktiviert Buffering \end{description}
\end{Desc}


Definiert in Zeile 345 der Datei cam-target.c.\index{cam-target.c@{cam-target.c}!lcv_regs_to_default@{lcv\_\-regs\_\-to\_\-default}}
\index{lcv_regs_to_default@{lcv\_\-regs\_\-to\_\-default}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}char lcv\_\-regs\_\-to\_\-default ()}\hfill\label{cam-target_8c_280d093e6ddc853845445c45449fff6c}


Setzt alleRegister auf ihren Standardwert. 

\begin{Desc}
\item[Rückgabe:]Erfolgsmeldung (positiv), bzw. Fehlernummer (negativ) \end{Desc}


Definiert in Zeile 316 der Datei cam-target.c.

Benutzt cam\_\-reg\_\-config, cam\_\-registers\_\-cnt, lcv\_\-config\_\-write() und TRUE.\index{cam-target.c@{cam-target.c}!lcv_reset_capture_frame@{lcv\_\-reset\_\-capture\_\-frame}}
\index{lcv_reset_capture_frame@{lcv\_\-reset\_\-capture\_\-frame}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}void lcv\_\-reset\_\-capture\_\-frame ()}\hfill\label{cam-target_8c_07a0b332c7bbc5d99dabef97da819574}


Setzt die 4 für die Bildregion verantwortlichen Register auf den Standardwert zurück. 



Definiert in Zeile 325 der Datei cam-target.c.

Benutzt cam\_\-reg\_\-config, lcv\_\-config\_\-write(), REG\_\-COLUMN\_\-START, REG\_\-ROW\_\-START, REG\_\-WINDOW\_\-HEIGHT und REG\_\-WINDOW\_\-WIDTH.\index{cam-target.c@{cam-target.c}!Raw10To8bit@{Raw10To8bit}}
\index{Raw10To8bit@{Raw10To8bit}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}void Raw10To8bit (unsigned char $\ast$ {\em pic}, int {\em size})}\hfill\label{cam-target_8c_593428c523e89b29b7b724e6120e289f}




Definiert in Zeile 57 der Datei cam-target.c.

Wird benutzt von lcv\_\-capture\_\-frame().

\subsubsection{Variablen-Dokumentation}
\index{cam-target.c@{cam-target.c}!cam_registers_buffer@{cam\_\-registers\_\-buffer}}
\index{cam_registers_buffer@{cam\_\-registers\_\-buffer}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}unsigned short {\bf cam\_\-registers\_\-buffer}[sizeof({\bf cam\_\-reg\_\-config})/sizeof($\ast${\bf cam\_\-reg\_\-config})]}\hfill\label{cam-target_8c_a911f9f1314ef1bc68e686cc870cdabe}


Bufferarray für Kameraregister. 



Definiert in Zeile 40 der Datei cam-target.c.\index{cam-target.c@{cam-target.c}!cam_registers_buffer_cnt@{cam\_\-registers\_\-buffer\_\-cnt}}
\index{cam_registers_buffer_cnt@{cam\_\-registers\_\-buffer\_\-cnt}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}unsigned short {\bf cam\_\-registers\_\-buffer\_\-cnt} = sizeof({\bf cam\_\-reg\_\-config}) / sizeof($\ast${\bf cam\_\-reg\_\-config})}\hfill\label{cam-target_8c_840debf3236acd5f6065c96fda376f0c}


Grösse des Buffers. 



Definiert in Zeile 35 der Datei cam-target.c.

Wird benutzt von lcv\_\-cam\_\-registers\_\-buffer\_\-init().\index{cam-target.c@{cam-target.c}!cam_registers_buffer_initialized@{cam\_\-registers\_\-buffer\_\-initialized}}
\index{cam_registers_buffer_initialized@{cam\_\-registers\_\-buffer\_\-initialized}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf cam\_\-registers\_\-buffer\_\-initialized} = FALSE}\hfill\label{cam-target_8c_f6fd4975878759cf79c88e5e01faf8be}


Buffer initialisiert. 



Definiert in Zeile 45 der Datei cam-target.c.\index{cam-target.c@{cam-target.c}!enable_buffer@{enable\_\-buffer}}
\index{enable_buffer@{enable\_\-buffer}!cam-target.c@{cam-target.c}}
\paragraph{\setlength{\rightskip}{0pt plus 5cm}unsigned char {\bf enable\_\-buffer} = TRUE}\hfill\label{cam-target_8c_1f32b4aea1ffaa63f852d412d73323b7}


Buffer aktivieren, deaktivieren. 



Definiert in Zeile 50 der Datei cam-target.c.